add Ubuntu noble to CI (#1273)
authortsteven4 <13596209+tsteven4@users.noreply.github.com>
Sat, 27 Apr 2024 19:35:28 +0000 (13:35 -0600)
committerGitHub <noreply@github.com>
Sat, 27 Apr 2024 19:35:28 +0000 (13:35 -0600)
* add ubuntu noble docker support

* update qt6 packages for noble.

noble has some new qt6 packages that alleviate the need to
directly install some libraries.
also, the dependencies of some qt6 packages have been improved
allowing us to specify what we use more directly.
this results in the same set of packges being installed.

* remove dependent qt5 package

* add noble to CI

.github/workflows/ubuntu.yml
tools/Dockerfile_noble [new file with mode: 0644]

index d4c8cec173cdda6fef3d1e1f9c0e0bfa4d987813..4385a76adc34eb94ac6194bf8b42bc8dd3464c72 100644 (file)
@@ -31,6 +31,13 @@ jobs:
             CMAKE_PREFIX_PATH: '/usr/lib/x86_64-linux-gnu/cmake/Qt6'
             SCRIPT: './tools/build_and_test_cmake.sh'
             TOOLS: 'clang'
+          - IMAGE: 'noble'
+            CMAKE_PREFIX_PATH: '/usr/lib/x86_64-linux-gnu/cmake/Qt6'
+            SCRIPT: './tools/build_and_test_cmake.sh'
+          - IMAGE: 'noble'
+            CMAKE_PREFIX_PATH: '/usr/lib/x86_64-linux-gnu/cmake/Qt6'
+            SCRIPT: './tools/build_and_test_cmake.sh'
+            TOOLS: 'clang'
           - IMAGE: 'jammy'
             CMAKE_PREFIX_PATH: '/usr/lib/x86_64-linux-gnu/cmake/Qt5'
             SCRIPT: './tools/build_extra_tests.sh'
diff --git a/tools/Dockerfile_noble b/tools/Dockerfile_noble
new file mode 100644 (file)
index 0000000..498f1ac
--- /dev/null
@@ -0,0 +1,94 @@
+# this file is used to build the image gpsbabel_build_environment used by travis.
+
+FROM ubuntu:noble
+
+LABEL maintainer="https://github.com/tsteven4"
+
+WORKDIR /app
+
+# update environment.
+ARG DEBIAN_FRONTEND=noninteractive
+RUN apt-get update && apt-get install -y --no-install-recommends \
+    apt-utils \
+ && apt-get upgrade -y \
+ && rm -rf /var/lib/apt/lists/*
+
+# install packages needed for gpsbabel build
+# split into multiple commands to limit layer size
+
+# basic build and test tools
+RUN apt-get update && apt-get install -y --no-install-recommends \
+    g++ \
+    make \
+    autoconf \
+    git \
+    valgrind \
+    expat \
+    libxml2-utils \
+    bear \
+    cmake \
+    ninja-build \
+    clazy \
+    clang-tidy \
+    jq \
+    curl \
+ && rm -rf /var/lib/apt/lists/*
+
+# alternative compiler
+RUN apt-get update && apt-get install -y --no-install-recommends \
+    clang \
+ && rm -rf /var/lib/apt/lists/*
+
+# pkgs needed to build document
+RUN apt-get update && apt-get install -y --no-install-recommends \
+    fop \
+    xsltproc \
+    docbook-xml \
+    docbook5-xml \
+    docbook-xsl \
+    docbook-xsl-ns \
+    libavalon-framework-java \
+    jing \
+ && rm -rf /var/lib/apt/lists/*
+
+# pkgs with libraries needed by gpsbabel
+RUN apt-get update && apt-get install -y --no-install-recommends \
+    libusb-1.0-0-dev \
+    pkg-config \
+    libudev-dev \
+ && rm -rf /var/lib/apt/lists/*
+
+# pkgs with qt used by gpsbabel
+RUN apt-get update && apt-get install -y --no-install-recommends \
+    qtbase5-dev \
+    qttools5-dev \
+    qttranslations5-l10n \
+    qtwebengine5-dev \
+    libqt5serialport5-dev \
+ && rm -rf /var/lib/apt/lists/*
+
+# pkgs with qt used by gpsbabel
+RUN apt-get update && apt-get install -y --no-install-recommends \
+    qt6-base-dev \
+    qt6-5compat-dev \
+    qt6-serialport-dev \
+    libx11-xcb-dev \
+    libxkbcommon-dev \
+    qt6-tools-dev \
+    qt6-translations-l10n \
+    qt6-webengine-dev \
+    qt6-wayland \
+ && rm -rf /var/lib/apt/lists/*
+
+# pkgs needed to generate coverage report:
+RUN apt-get update && apt-get install -y --no-install-recommends \
+    gcovr \
+ && rm -rf /var/lib/apt/lists/*
+
+# install environment for locale test
+RUN apt-get update && apt-get install -y --no-install-recommends \
+    locales \
+ && rm -rf /var/lib/apt/lists/* \
+ && sed -i 's/^# *\(en_US ISO-8859-1\)/\1/' /etc/locale.gen \
+ && locale-gen \
+ && locale -a